package com.itheima.d2_map;

import java.util.Comparator;
import java.util.TreeMap;

/**
 * 需求：
 * 创建一个TreeMap集合，键是学生对象(Student)，值是籍贯(String)。
 * 学生属性姓名和年龄，按照年龄进行排序并遍历
 */
public class Demo7 {
    public static void main(String[] args) {
        //1.创建一个TreeMap集合，学生作为key，籍贯作为value
        TreeMap<Student, String> map1 = new TreeMap<>();

        //2.创建学生对象
        Student stu1 = new Student("张三", 23);
        Student stu2 = new Student("李四", 20);
        Student stu3 = new Student("王五", 25);
        Student stu4 = new Student("赵六", 22);

        //3.存入map集合
        map1.put(stu1, "武汉");
        map1.put(stu2, "合肥");
        map1.put(stu3, "西安");
        map1.put(stu4, "成都");

        System.out.println(map1);
        System.out.println("--------------------");

        //4.制定排序规则，方案一：让Student类实现Comparable接口，重写方法制定排序规则！

        //5.制定排序规则，方案二：在创建TreeMap集合对象时，传入一个Comparator比较器对象，比较器有排序规则
        TreeMap<Student, String> map2 = new TreeMap<>(new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
                //制定排序规则：根据年龄排序
                int age1 = o1.getAge();
                int age2 = o2.getAge();
                int result = age2 - age1;
                return result;
            }
        });

        map2.put(stu1, "武汉");
        map2.put(stu2, "合肥");
        map2.put(stu3, "西安");
        map2.put(stu4, "成都");

        System.out.println(map2);
    }
}